# 重复字符串
"""解题思路
检查长度合法性：首先确认字符串长度是否能被 K 整除。如果不能，则无法构成 K 次重复字符串。
分割字符串：将字符串分割为 K 个等长的子块，每个子块的长度为 L = len(S) // K。
统计字符频率：对于每个位置 j（从 0 到 L-1），统计所有子块在该位置上的字符出现次数。
计算最小修改次数：在每个位置 j 上，选择出现频率最高的字符，这样可以减少该位置的修改次数。总修改次数为各位置修改次数之和。
"""


def repeat_str(k: int, s: str):
    n = len(s)
    if n % k != 0:  # 字符串无法被分割为k个字符块
        return -1
    l = n // k  # 将字符串分为l个固定的字符块, 每个字符块的长度
    res = 0
    for i in range(l):  # 遍历子字符块中的每一个字符
        freq_dict = {}
        max_cnt = 0
        for j in range(k):  # 遍历每一个子字符块, 检查出现最多的字符就是不需要修改的字符
            c = s[i + j * l]
            freq_dict[c] = freq_dict.get(c, 0) + 1
            if freq_dict[c] > max_cnt:
                max_cnt = freq_dict[c]
        res += k - max_cnt

    return res


if __name__ == '__main__':
    print(repeat_str(3, "abcabbabc"))
    print(repeat_str(2, "aabbaa"))
